﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SIS_Wcf_Server.Model;

namespace SIS_Wcf_Server
{
    public class SISServer
    {

        private ObjectServer _objserver;

        public SISServer(IFactory factory)
        {
            _objserver = new ObjectServer();
            _objserver.Database = factory.GetData();
            _objserver.Search = factory.GetSearcher(_objserver.Database);
        }


        /// <summary>
        /// Søger alle informationer frem der er i databasen.
        /// </summary>
        /// <param name="locations"></param>
        /// <returns>Returnere en liste af informationer der matcher en eller flere af de søgte lokationer</returns>
        public List<RestInformation> GetInformations( )
        {
            return _objserver.Search.DoListAll();
        }

        /// <summary>
        /// Søgning efter information ud fra en liste af lokationer. De lokationer der søges på bliver gemt i databasen, hvis de ikke findes i forvejen. 
        /// På den måde vokser vores lokations database automatisk. Alle lokationer i en søgning kobles sammen.
        /// </summary>
        /// <param name="locations"></param>
        /// <returns>Returnere en liste af informationer der matcher en eller flere af de søgte lokationer</returns>
        public List<RestInformation> GetInformationPackagesFromLocationSearch(List<Model.Lokation> locations)
        {
            return _objserver.Search.DoSearch(locations);         
        }

        public RestInformation CreateInformation(RestInformation information)
        {
            return _objserver.Database.CreateInformation(information);
        }


        public List<Model.Lokation> GetAllLocations()
        {
            return _objserver.Database.GetAllLocations();

        }


    }
}